package com.smile.config;

import cn.dev33.satoken.stp.StpUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

@Component
public class PermissionInterceptor implements HandlerInterceptor {

    @Autowired
    private RedisTemplate redisTemplate;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        if (StpUtil.isLogin()) {

            Object o = redisTemplate.opsForValue().get(RedisConstant.PERMISSION_PREFIX + StpUtil.getLoginId());
            List<String> list = (List<String>) o;

//            if (CollectionUtil.isEmpty(list)) {
//                list = new ArrayList<>();
//            }
//
////            //添加账号
//            if (request.getRequestURI().contains("/user/system/add")) {
//                if (list.contains("添加账号")) {
//                    return true;
//                } else {
//                    throw new RuntimeException("该用户没有添加账号权限");
//                }
//            }
//
//            //删除账号
//            if (request.getRequestURI().contains("/user/system/delete")) {
//                if (list.contains("删除账号")) {
//                    return true;
//                } else {
//                    throw new RuntimeException("该用户没有删除账号权限");
//                }
//            }
//
//            //组织管理
//            if (request.getRequestURI().contains("/organization/add")
//                    || request.getRequestURI().contains("/organization/edit")
//                    || request.getRequestURI().contains("/organization/delete")) {
//                if (list.contains("组织管理")) {
//                    return true;
//                } else {
//                    throw new RuntimeException("该用户没有组织管理权限");
//                }
//            }
//
//            //计划管理
//            if (request.getRequestURI().contains("/onSiteInspection/addOnSiteInspection")
//                    || request.getRequestURI().contains("/onSiteInspection/editOnsiteInspection")
//                    || request.getRequestURI().contains("/onSiteInspection/delete")) {
//                if (list.contains("计划管理")) {
//                    return true;
//                } else {
//                    throw new RuntimeException("该用户没有计划管理权限");
//                }
//            }
//
//            //航线管理
//            if (request.getRequestURI().contains("/airline/add")
//                    || request.getRequestURI().contains("/airline/editAirline")
//                    || request.getRequestURI().contains("/airline/deleteAirline")) {
//                if (list.contains("航线管理")) {
//                    return true;
//                } else {
//                    throw new RuntimeException("该用户没有航线管理权限");
//                }
//            }
//
//            //角色管理
//            if (request.getRequestURI().contains("/role/add")
//                    || request.getRequestURI().contains("/role/edit")
//                    || request.getRequestURI().contains("/role/delete")) {
//                if (list.contains("角色管理")) {
//                    return true;
//                } else {
//                    return false;
//                }
//            }


            return true;


            //  return HandlerInterceptor.super.preHandle(request, response, handler);
        } else {
            return true;
        }
    }
}
